package com.ape.mapsa.produccion.service;

import java.util.List;

import com.ape.mapsa.produccion.model.Cliente;
import com.ape.mapsa.produccion.model.Color;
import com.ape.mapsa.produccion.model.ConfPerformedWork;
import com.ape.mapsa.produccion.model.ConfProdScrap;
import com.ape.mapsa.produccion.model.Confeccion;
import com.ape.mapsa.produccion.model.DepItemPrintSpec;
import com.ape.mapsa.produccion.model.EstadoProduccion;
import com.ape.mapsa.produccion.model.ExtPerformedWork;
import com.ape.mapsa.produccion.model.ExtProdScrap;
import com.ape.mapsa.produccion.model.Extrusion;
import com.ape.mapsa.produccion.model.Formula;
import com.ape.mapsa.produccion.model.FormulaMp;
import com.ape.mapsa.produccion.model.ImpPerformedWork;
import com.ape.mapsa.produccion.model.ImpProdScrap;
import com.ape.mapsa.produccion.model.Impresion;
import com.ape.mapsa.produccion.model.Item;
import com.ape.mapsa.produccion.model.ItemTipo;
import com.ape.mapsa.produccion.model.Maquina;
import com.ape.mapsa.produccion.model.Muestra;
import com.ape.mapsa.produccion.model.OpComment;
import com.ape.mapsa.produccion.model.OrdenProduccion;
import com.ape.mapsa.produccion.model.PedidoVenta;
import com.ape.mapsa.produccion.model.ProdOperator;

public interface IProduccionService {
	public List<Item> getAllItems();

	public void addOp(OrdenProduccion orden, String author, Long userID);

	public List<OrdenProduccion> getAllOps();

	public List<ItemTipo> getAllItemTipos();

	public Color getColorByDescription(Color color);

	public List<Muestra> getAllMuestras();

	public List<Color> getAllColors();

	public EstadoProduccion getProdStateById(Long id);

	public void saveMuestra(Muestra muestra);

	public PedidoVenta getPedidoById(Long pedidoVenta);

	public PedidoVenta savePedidoVenta(PedidoVenta pedidoVenta);

	public List<Cliente> getAllClientes();

	public PedidoVenta getPedidoByNumero(PedidoVenta pedidoVenta);

	public void saveColor(Color newColor);

	public void updateOp(OrdenProduccion newOrden);

	public void saveItem(Item newItem);

	public void updateItem(Item newItem);

	public Item getItemById(Long id);

	public void saveCliente(Cliente newCliente);

	public EstadoProduccion getEstadoProduccionById(Long consequence);

	public void updateOrdenProd(OrdenProduccion selectedOp);

	public void saveComment(OpComment comment);

	public List<OrdenProduccion> getOrdenProdByState(Long l);

	public Integer countOrdenProdByState(Long l);

	public Item getItemByCode(String itemCode);

	public OrdenProduccion getOpById(long opId);

	public void saveDepItemPrintSpces(DepItemPrintSpec depItemPrintSpecs);

	public Long getPedidVentaNextId();

	public List<Maquina> getMaquinas();

	public void addMaquina(Maquina maq);

	public void updateMaquina(Maquina maq);

	public void delteMaquina(Maquina maq);

	public Maquina getMaquinaByCode(Maquina maq);

	public Maquina getmaMaquinaById(Maquina maq);

	public List<Maquina> findMaquinaTypeByCode(String query);

	public List<Maquina> getMaquinasByType(Integer valor);

	public List<Extrusion> getMaqAssginByType(Integer tipoMaquina);

	public List<Extrusion> getAssignationByMaquina(Long id);

	public List<Impresion> getImpAssginByType(Integer valor);

	public List<Confeccion> getConfAssginByType(Integer valor);

	public void saveExtrusionPerformedWork(ExtPerformedWork extPerformedWork);

	public void saveImpresionPerformedWork(ImpPerformedWork extPerformedWork);

	public void saveConfeccionPerformedWork(ConfPerformedWork extPerformedWork);

	public void updateExtrusionPerformedWork(ExtPerformedWork ExtPerformedWork);

	public void deleteExtrusionPerformedWork(ExtPerformedWork ExtPerformedWork);

	public List<Formula> getFormulas(String query);

	public List<Formula> getAllFormulas();

	public List<Item> getMpByQuery(String query);

	public void saveFormula(Formula selectedFormula);

	public void saveFormulaMp(FormulaMp formulaMp);

	public void updateFormula(Formula selectedFormula);

	public Formula getFormulaById(Long id);

	public void updateFormulaMp(FormulaMp selectedMps);

	public void deleteFormulaMp(FormulaMp originalFmp);

	public List<FormulaMp> getMpForFormula(Formula id);

	public Formula getFormulaByDescription(String description);

	public List<ExtPerformedWork> getExtrusionPerformedWorks(Extrusion extrusion);

	public List<ExtProdScrap> getExtrusionScraps(Extrusion extrusion);

	public void saveProdExtrusionScrap(ExtProdScrap scrap);

	public void updateProdExtrusionScrap(ExtProdScrap scrap);

	public void deleteProdExtrusionScrap(ExtProdScrap scrap);

	public void updateColor(Color newColor);

	public void deleteColor(Color newColor);

	public void updateClient(Cliente newCliente);

	public void deleteCliente(Cliente newCliente);

	public List<ConfPerformedWork> getConfectionPerformedWorks(Confeccion confeccion);

	public List<ConfProdScrap> getConfectionScraps(Confeccion confeccion);

	public List<ImpPerformedWork> getImpresionPerformedWorks(Impresion impresion);

	public List<ImpProdScrap> getImpresionScraps(Impresion impresion);

	public void updateExtrusion(Extrusion extrusion);

	public void updateImpresionPerformedWork(ImpPerformedWork performedWork);

	public void updateConfeccionPerformedWork(ConfPerformedWork performedWork);

	public void deleteImpresionPerformedWork(ImpPerformedWork performedWork);

	public void saveProdConfeccionScrap(ConfProdScrap scrap);

	public void saveProdImpresionScrap(ImpProdScrap scrap);

	public void deleteConfeccionPerformedWork(ConfPerformedWork performedWork);

	public void updateProdImpresionScrap(ImpProdScrap scrap);

	public void deleteProdImpresionScrap(ImpProdScrap scrap);

	public void updateProdConfeccionScrap(ConfProdScrap scrap);

	public void deleteProdConfeccionScrap(ConfProdScrap scrap);

	public void updateImpresion(Impresion impresions);

	public void updateConfeccion(Confeccion confeccion);

	public List<ProdOperator> getAllOperators();

	public void updateOperator(ProdOperator newOperator);

	public void saveOperator(ProdOperator newOperator);

	public List<ProdOperator> getOperators(String query);

}
